import pandas as pd  # 导入pandas库，用于数据处理和分析

import matplotlib.pyplot as plt  # 导入matplotlib.pyplot模块，用于绘制图表



# 设置中文字体显示

plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体为黑体，以支持中文字符的正确显示

plt.rcParams['axes.unicode_minus'] = False  # 解决坐标轴上负号显示的问题，确保负号正常显示



# 读取Excel文件

file_path = 'jobs.xlsx'  # 定义Excel文件的路径，确保文件路径正确且文件存在

df = pd.read_excel(file_path)  # 使用pandas的read_excel函数读取Excel文件，将数据加载到DataFrame对象df中



# 提取经验要求信息

experience = df['jobLabels'].dropna().tolist()  # 从DataFrame中提取'jobLabels'列的数据，使用dropna()方法去除缺失值，然后使用tolist()方法将数据转换为列表格式



# 统计经验要求出现的次数

experience_counts = {}  # 创建一个空字典，用于存储经验要求及其出现的次数

for exp in experience:  # 遍历经验要求列表

    exp = exp.split(',')[0]  # 提取经验要求部分（假设经验要求是字符串中的第一个元素）

    if exp in experience_counts:  # 如果经验要求已在字典中

        experience_counts[exp] += 1  # 将该经验要求的出现次数加1

    else:  # 如果经验要求不在字典中

        experience_counts[exp] = 1  # 在字典中添加该经验要求，并初始化出现次数为1



# 准备饼状图数据

labels = list(experience_counts.keys())  # 获取经验要求列表，作为饼状图的标签

sizes = list(experience_counts.values())  # 获取经验要求出现次数列表，作为饼状图的大小数据

colors = plt.cm.tab20.colors  # 使用matplotlib的colormap获取颜色列表，用于饼状图的颜色填充



# 绘制饼状图

plt.figure(figsize=(10, 8))  # 创建一个大小为10x8英寸的新图形窗口，指定图表的初始尺寸

plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=140)  # 绘制饼状图，设置标签、颜色、百分比格式和起始角度

plt.title('Python工程师经验要求分布', fontsize=16)  # 设置图表的标题为'Python工程师经验要求分布'，并指定字体大小为16



# 保存并显示图表

plt.savefig('experience_distribution_pie.png')  # 将绘制好的图表保存为图像文件，文件名为'experience_distribution_pie.png'

plt.show()  # 在屏幕上显示图表，以便用户查看